/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package Gestore;

import Entity.Inserzione;
import Entity.Utente;
import java.util.GregorianCalendar;
import javax.ejb.Remote;

/**
 *
 * @author Vito
 */
@Remote
public interface GestoreRemote {

    public Utente login(String username, String password);

    public void createUtente(String username, String password, String nome, String cognome, GregorianCalendar dataNascita, String indirizzo, String citta, String provincia, String regione, String stato, String codiceFiscale, String email);

    public Object findUtente(int idUtente);

    public void editUtente(String username, String password, String nome, String cognome, GregorianCalendar dataNascita, String indirizzo, String citta, String provincia, String regione, String stato, String codiceFiscale, String email, int idUtente);

    public void removeUtente(int idUtente);

    public void createInserzione(Integer idUtente, String regione, String provincia, String localita, String indirizzo, String zona, String descrizione, String tipoAbitazione, short stanzeTotali, short stanzeInAffitto, short postiSingoli, short postiDoppi, String parcheggio, String infoAggiuntive, GregorianCalendar inizioDisp, GregorianCalendar fineDisp);

    public Inserzione findInserzione(int idInserzione);

    public void editInserzione(java.lang.Integer idInserzione, java.lang.String regione, java.lang.String provincia, java.lang.String localita, java.lang.String indirizzo, java.lang.String zona, java.lang.String descrizione, java.lang.String tipoAbitazione, short stanzeTotali, short stanzeInAffitto, short postiSingoli, short postiDoppi, java.lang.String parcheggio, java.lang.String infoAggiuntive, java.util.GregorianCalendar inizioDisp, java.util.GregorianCalendar fineDisp);

    public void removeInserzione(java.lang.Integer IdInserzione);

    public java.util.List findAllInserzione();

    public java.util.List findInserzioneByParameters(java.lang.String tipoabitazione, java.lang.String zona, java.lang.String regione, java.lang.String provincia, java.lang.String localita, java.lang.String parcheggio);

    public java.util.List findInserzioneByLocatore(java.lang.Integer idUtente);

    public boolean controllaDate(Entity.Inserzione ins, java.util.GregorianCalendar start, java.util.GregorianCalendar end);

    public void createTransazione(java.lang.Integer idInserzione, java.lang.Integer idLocatario, java.util.GregorianCalendar data, java.util.GregorianCalendar inizio, java.util.GregorianCalendar fine);

    public java.util.List findTransazioneByLocatore(java.lang.Integer idUtente);

    public java.util.List findTransazioneByLocatario(java.lang.Integer idUtente);

    public Entity.Transazione findTransazione(int idTransazione);

    public void createFeedbackLocatario(java.lang.Integer idAutore, java.lang.Integer idRicevente, java.lang.Integer idTransazione, java.util.GregorianCalendar dataFeed, java.lang.String descrizione, short punteggio);

    public void createFeedbackLocatore(java.lang.Integer idAutore, java.lang.Integer idRicevente, java.lang.Integer idTransazione, java.util.GregorianCalendar dataFeed, java.lang.String descrizione, short punteggio);

    public java.util.List<Entity.Feedback> getFeedBackRicevuti(int ricevente);

    public Entity.Utente loginEsterno(java.lang.String username, java.lang.String identifier, java.lang.String nome, java.util.GregorianCalendar dataNascita, java.lang.String indirizzo, java.lang.String citta, java.lang.String provincia, java.lang.String regione, java.lang.String stato, java.lang.String email);

}
